/**
 * 生成一个uuid
 * @returns {string} - 生成一个uuid
 */
export function uuid () {
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
    const r = (Math.random() * 16) | 0;
    const v = c === 'x' ? r : (r & 0x3) | 0x8;
    return v.toString(16);
  });

  // 示例输出：d6a022c6-5b1a-4c8d-9f3e-7a0b4c8d2e5f
}

/**
 * 判断对象是否为Number类型
 * @param {*} obj 对象
 * @returns {Boolean} 是否为Number类型
 */
export function isNumber(obj) {
  return typeof obj == 'number' && obj.constructor == Number
}

/**
 * 判断对象是否为String类型
 * @param {*} obj 对象
 * @returns {Boolean} 是否为String类型
 */
export function isString(obj) {
  return typeof obj == 'string' && obj.constructor == String
}

/**
 * 判断对象是否为Boolean类型
 * @param {*} obj 对象
 * @returns {Boolean} 是否为Boolean类型
 */
export function isBoolean(obj) {
  return typeof obj == 'boolean' && obj.constructor == Boolean
}

/**
 * 判断对象是否为Object类型
 * @param {*} obj 对象
 * @returns {Boolean} 是否为Object类型
 */
export function isObject(obj) {
  return typeof obj == 'object' && obj.constructor == Object
}

/**
 * 随机获取数组中的一个元素
 *
 * @export
 * @param {Array} arr 数组
 * @return {*} 获取到的随机元素
 */
export function getArrayRandomOne(arr) {
  let n = Math.floor(Math.random() * arr.length + 1) - 1
  return arr[n]
}